package com.vogue.supplymall.payment.api;

import java.io.Serializable;

import com.vogue.supplymall.common.annotation.AkkaRemoteServer;
import com.vogue.supplymall.payment.dto.BaseResultParameter;
import com.vogue.supplymall.payment.dto.BaseSimpleInputParameter;
import com.vogue.supplymall.payment.dto.CancelResultParameter;
import com.vogue.supplymall.payment.dto.IResultParameter;
import com.vogue.supplymall.payment.dto.InputParameter;
import com.vogue.supplymall.payment.dto.MultiplePayInputParameter;
import com.vogue.supplymall.payment.dto.PursePayInputParameter;
import com.vogue.supplymall.payment.dto.PursePayResultParameter;
import com.vogue.supplymall.payment.dto.ResultParameter;
import com.vogue.supplymall.payment.dto.SinglePayInputParameter;
/**
 * 吾享接口对接封装api
 * @author cy
 */
@AkkaRemoteServer
public interface WuXiangPayment extends Serializable {
    
    /**
     * 支付宝获取支付连接(生成二维码链接)
     * @param parameter 订单数据信息
     * @param commPayGetUrl 对接吾享支付接口获取支付二维码连接接口地址
     * @param publickey64 对接加密公钥字符串(Base64编码后的)由吾享提供 结尾必须以 == 结束
     * @return 支付结果
     * @throws Exception 错误异常
     */
    public ResultParameter commPayGetUrl(InputParameter parameter, String commPayGetUrl, String publickey64) throws Exception;
    
    /**
     * 商龙云钱包支付连接(获取支付网页的参数及提交表单数据的地址)
     * @param parameter 订单数据信息
     * @param commPayGetUrl 对接吾享支付接口获取支付二维码连接接口地址
     * @param publickey64 对接加密公钥字符串(Base64编码后的)由吾享提供 结尾必须以 == 结束
     * @return 支付结果
     * @throws Exception 错误异常
     */
    public PursePayResultParameter pursePayGetUrl(PursePayInputParameter parameter, String pursePayGetUrl, String publickey64) throws Exception;
    
    /**
     * 撤销支付接口
     * @param payCancelInputParameter 订单数据信息
     * @param commPayCancelUrl 对接吾享支付接口撤销支付接口地址
     * @param publickey64 对接加密公钥字符串(Base64编码后的)由吾享提供 结尾必须以 == 结束
     * @return 撤销结果
     * @throws Exception 错误异常
     */
    public CancelResultParameter commPayCancel(BaseSimpleInputParameter payCancelInputParameter, String commPayCancelUrl, String publickey64) throws Exception;
    
    /**
     * 支付状态查询接口
     * @param payQueryInputParameter    查询参数
     * @param url   查询路径
     * @param publickey64   查询数据混淆字符串
     * @return 查询结果
     * @throws Exception 错误异常
     */
    public IResultParameter queryPayState(BaseSimpleInputParameter payQueryInputParameter, String url, String publickey64) throws Exception;
    
    /**
     * 支付订单关单接口
     * @param payCloseInputParameter 订单数据信息
     * @param commPayCloseUrl 对接吾享关单接口地址
     * @param publickey64 对接加密公钥字符串(Base64编码后的)由吾享提供 结尾必须以 == 结束
     * @return 关单结果
     * @throws Exception 错误异常
     */
    public BaseResultParameter commPayClose(BaseSimpleInputParameter payCloseInputParameter, String commPayCloseUrl, String publickey64) throws Exception;
    
    /**
     * 多单合并支付接口
     * @param multiplePayInputParameter 多订单封装数据
     * @param payUrl 支付接口url
     * @param publickey64 对接加密公钥字符串(Base64编码后的)由吾享提供 结尾必须以 == 结束
     * @return 支付结果
     * @throws Exception 错误异常
     */
    public IResultParameter mergePay(MultiplePayInputParameter multiplePayInputParameter, String payUrl, String publickey64) throws Exception;
    
    /**
     * 多单合并支付接口
     * @param singlePayInputParameter 订单封装数据
     * @param payUrl 支付接口url
     * @param publickey64 对接加密公钥字符串(Base64编码后的)由吾享提供 结尾必须以 == 结束
     * @return 支付结果
     * @throws Exception 错误异常
     */
    public IResultParameter singlePay(SinglePayInputParameter singlePayInputParameter, String payUrl, String publickey64) throws Exception;
}
